﻿using System;
using System.Collections.Generic;
using Acaweb.Data.Contracts;
using Acaweb.Model.Entities;
using Acaweb.Model.Entities.DatosCompuestos;
using Spring.Transaction.Interceptor;
using System.Linq.Expressions;

namespace Acaweb.Data.Dao.NHibernate
{
    public class CursosDao : HibernateDao<Cursos, CursoPk>, ICursosDao
    {
        public IList<Cursos> GetAll()
        {
            return GetAll<Cursos>();
        }

        public IList<Cursos> GetByPlaneEstudio(int PlanEstudio)
        {
            return this.Session.QueryOver<Cursos>().Where(t => t.PlanEstudio.CodigoPlan == PlanEstudio).List();
        }

        public IList<Cursos> GetByMateria(int Materia)
        {
            return this.Session.QueryOver<Cursos>().Where(t => t.Materia.CodigoMateria == Materia).List();
        }

        public IList<Cursos> GetByPeriodoAcademico(PeriodoAcademico PeriodoAcademico)
        {
            //IList<Cursos> Lista = Session.CreateCriteria<Cursos>("select * from RAR_PROG_ACADEM where PERIODO = " + PeriodoAcademico.Periodo + " and ANO = and CODIGO_PLAN = 820" + PeriodoAcademico.Ano).List<Cursos>();

            IList<Cursos> Obj = this.Session.QueryOver<Cursos>().Where((Cursos t1) => (t1.CursoPk.Ano == PeriodoAcademico.Ano && t1.CursoPk.Periodo == PeriodoAcademico.Periodo && t1.CursoPk.CodigoPlan == 820)).List();
            
            return Obj;
        }

        public IList<Cursos> GetByPeriodoAcademico(PeriodoAcademico PeriodoAcademico, int PlanEstudios)
        {
            return this.Session.QueryOver<Cursos>().Where((Cursos t1) => (t1.CursoPk.Ano == PeriodoAcademico.Ano && t1.CursoPk.Periodo == PeriodoAcademico.Periodo && t1.CursoPk.CodigoPlan == PlanEstudios)).List();
        }


        public IList<Cursos> GetByMateria(int Materia, PeriodoAcademico PeriodoAcademico)
        {
            return this.Session.QueryOver<Cursos>().Where((Cursos t1) => (t1.CursoPk.Ano == PeriodoAcademico.Ano && t1.CursoPk.Periodo == PeriodoAcademico.Periodo && t1.CursoPk.CodigoMateria == Materia)).List();
        }
    }
}